1. Field of the Invention
This invention relates to computer systems and more particularly to aspects of power management and BIOS.
2. Description of the Related Art
Computing systems are information handling systems which are designed to give independent computing power to one or more users. Computing systems can be found in many forms including, for example, mainframes, minicomputers, workstations, servers, personal computers, internet terminals, notebooks and embedded systems. Personal computer (PC) systems include desk top, floor standing, or portable versions. A typical PC system is a microcomputer that includes a microprocessor, associated memory and control logic (typically on a system board) and a number of peripheral devices that provide input and/or output (I/O) for the system.
Computing systems typically include a set of built-in software routines called the basic input/output system (BIOS). The BIOS is a software interface between the system hardware and the operating system software. The BIOS facilitates programmer and user interaction with the system hardware. The BIOS is often referred to as firmware. Like software, the BIOS is a set of instructions to the computer's microprocessor. The BIOS is commonly coded using, for example, assembly language, and stored onto a non-volatile memory such as a ROM (Read Only Memory) or a PROM (Programmable ROM) such as an EPROM (Erasable PROM), an EEPROM (Electrically Erasable PROM), a flash RAM (Random Access Memory) or any other type of memory appropriate for storing BIOS.
The BIOS controls several important functions of personal computer systems. For instance, the BIOS performs various functions at power up, including testing and initializing memory, inventorying and initializing the system, and testing the system. These functions at power up are referred to as “system boot” or “booting the system” and can occur every time the system powers up or is reset. One part of power up is referred to as Power On Self Test (POST). The POST routines include testing various aspects of the system.
The BIOS also controls keystroke interpretation, display of characters, and communication via the PC ports. The operating system and application programs of a computer system access the BIOS rather than directly manipulating I/O ports, registers and control words of the specific system hardware. BIOS can be accessed through an interface of software interrupts and contains a plurality of entry points respectively corresponding to the different interrupts.
Another function supported by BIOS relates to processor performance states. Microprocessors utilized in mobile applications, i.e., those used in battery powered systems, are particularly sensitive to power considerations. That is in part due to the small, densely packed system construction that limits the ability of the mobile computer system to safely dissipate the heat generated. A particular processor may operate at a number of different performance levels to achieve power management goals.
Appropriately monitoring and controlling the processor's operating parameters is important to optimizing the computer's performance, power consumption, and in the case of a portable or notebook computer, battery life. One of the current power management techniques utilized provides a computer system that has multiple performance states. The computer system determines an appropriate performance state based on system utilization or other information, such as temperature or battery life, and adjusts the performance of the system accordingly. Each performance state is made up of a particular voltage and operating frequency. The performance states may be stored in performance state tables, which specify a plurality of voltage and frequency combinations for a particular processor. In one approach, e.g., the PowerNow!™ technology from Advanced Micro Devices, a driver utilizes the performance state tables to dynamically change performance states and saves power by operating only as fast as required by the current system utilization.
The BIOS programmer has to manually build each performance state table from information provided, e.g., in processor data sheets. Because BIOS typically has to support several different processors over the life of a product, many performance state tables may be included in a BIOS version. However, certain performance states supported by one processor may not be supported by another processor. In fact, processors may be nominally the same but be built by slightly different processes resulting in different voltages and frequencies being supported. It is undesirable to revise BIOS frequently to support additional performance states. On the other hand it is may be unwieldy for BIOS to support large numbers of performance states.
Accordingly, it would be desirable to provide a way for BIOS to effectively handle a large number of performance states without affecting runtime resources. In addition, it would be desirable to be able to suitably support a processor when none of the performance state tables in BIOS match the processor in the system.